package com.Maykk.Demo06;

/**
 * @ClassName: SellTickets
 * @Description: TODO 门票类 -- 同步锁
 * @Author: MaykkStar@163.com
 */
public class SellTickets implements Runnable {
    private int tickets = 100;
    // private int numShop = 1;
    // Object obj = new Object();

    @Override
    public void run() {
        while (true) {
            synchronized (this) { // 同步语句块可以解决线程安全问题
                // synchronized (new Object()) { // 不能使用内部类，这样的话每个线程读取的对象不一样，就像上厕所库兜里揣一把锁
                // synchronized (obj) { // 可以使用成员对象,这样每个线程读取时都是 obj 对象
                if (tickets > 0) {
                    System.out.println(Thread.currentThread().getName() + "售出了第" + this.tickets + "张票");
                    this.tickets--;
                    // Sell(Thread.currentThread().getName(), tickets);

                } else {
                    System.out.println("没票了");
                    break;
                }
            }
            // 卖一次票就歇一下 - 打票的时候不能卖第二章
            try {
                Thread.sleep(100);
            } catch (InterruptedException e) {
                throw new RuntimeException(e);
            }
        }
    }

    // private void Sell(String name, int tickets) {
    //     --tickets;
    //     System.out.println(name + "售出了一张票");
    // }

}
